Een generieke lijst serialiseren naar CSV
Home

Een generieke lijst serialiseren naar CSV

Een generieke lijst serialiseren naar CSV

Om de datastructuur, een generieke lijst, te serialiseren moeten we deze datastructuur omzetten naar een string (een array of chars).

Stappenplan

  1. We beginnen met een methode te maken met de naam SerializeObjectToCsv(List<Postcode> list, string separator) in klasse TryOut in de namespace DotNetCore.Learning in het Learning.cs bestand. Deze methode aanvaardt twee parameters:
    1. de te serialiseren generieke lijst;
    2. een string waarvan de waarde als onderscheidingsteken in het csv bestand wordt gebruikt;
    public static string SerializeObjectToCsv(List<Postcode> list, string separator)
    {
        string fileName = @"Data/Postcodes2.csv";
        string message;
        try
        {
            TextWriter writer = new StreamWriter(fileName);
            foreach (Postcode item in list)
            {
                // One of the most versatile and useful additions to the C# language in version 6
                // is the null conditional operator ?.           
                writer.WriteLine("{0}{5}{1}{5}{2}{5}{3}{5}{4}",
                    item?.Code,
                    item?.Plaats,
                    item?.Provincie,
                    item?.Localite,
                    item?.Province,
                    separator);
            }
            message = $"Het bestand met de naam {fileName} is gemaakt!";
        }
        catch (Exception e)
        {
            // Melding aan de gebruiker dat iets verkeerd gelopen is.
            // We gebruiken hier de nieuwe mogelijkheid van C# 6: string interpolatie
            message = $"Kan het bestand met de naam {fileName} niet maken.\nFoutmelding {e.Message}.";
            }
        return message;
    }
    
  2. We proberen deze methode uit in de main methode van de Program klasse in het bestand Program.cs:
    using System;
    
    namespace DotNetCore.Learning
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(TryOut.SerializeObjectToCsv(TryOut.GetPostcodeList(), "|"));
                Console.ReadKey();
            }
        }
    }
  3. En dat is het resultaat, het bestand is met de postcodes voorgesteld als csv is gemaakt:
    Visual Studio CSV Serializer Test Result
    Visual Studio CSV Serializer Test Result

JI
2020-10-23 09:06:43